text: Add some missing setters and getters
authorMatthias Clasen <mclasen@redhat.com>
Sat, 3 Oct 2020 16:20:58 +0000 (12:20 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 3 Oct 2020 17:11:20 +0000 (13:11 -0400)
Add getters and setters for the enable-emoji-completion,
propagate-text-width and truncate-multiline properties.

docs/reference/gtk/gtk4-sections.txt
gtk/gtktext.c
gtk/gtktext.h

index eca66b8690e93af710829fe0cb1368a03d846a86..a2e4dbc60a3a232ae71b658174c5cc545a606ced 100644 (file)
@@ -1030,6 +1030,12 @@ gtk_text_get_tabs
 gtk_text_grab_focus_without_selecting
 gtk_text_set_extra_menu
 gtk_text_get_extra_menu
+gtk_text_set_enable_emoji_completion
+gtk_text_get_enable_emoji_completion
+gtk_text_set_propagate_text_width
+gtk_text_get_propagate_text_width
+gtk_text_set_truncate_multiline
+gtk_text_get_truncate_multiline
 <SUBSECTION Private>
 gtk_text_get_type
 </SECTION>
index da11cffe9b94cde407912590b31f343f1f6a3a69..6910aeff8b68e7aa95bf88570f5d8124ae287fca 100644 (file)
@@ -526,8 +526,6 @@ static void         gtk_text_get_scroll_limits        (GtkText        *self,
                                                        int            *min_offset,
                                                        int            *max_offset);
 static GtkEntryBuffer *get_buffer                      (GtkText       *self);
-static void         set_enable_emoji_completion        (GtkText       *self,
-                                                        gboolean       value);
 static void         set_text_cursor                    (GtkWidget     *widget);
 static void         update_placeholder_visibility      (GtkText       *self);
 
@@ -1597,11 +1595,7 @@ gtk_text_set_property (GObject      *object,
       break;
 
     case PROP_TRUNCATE_MULTILINE:
-      if (priv->truncate_multiline != g_value_get_boolean (value))
-        {
-          priv->truncate_multiline = g_value_get_boolean (value);
-          g_object_notify_by_pspec (object, pspec);
-        }
+      gtk_text_set_truncate_multiline (self, g_value_get_boolean (value));
       break;
 
     case PROP_OVERWRITE_MODE:
@@ -1644,16 +1638,11 @@ gtk_text_set_property (GObject      *object,
       break;
 
     case PROP_ENABLE_EMOJI_COMPLETION:
-      set_enable_emoji_completion (self, g_value_get_boolean (value));
+      gtk_text_set_enable_emoji_completion (self, g_value_get_boolean (value));
       break;
 
     case PROP_PROPAGATE_TEXT_WIDTH:
-      if (priv->propagate_text_width != g_value_get_boolean (value))
-        {
-          priv->propagate_text_width = g_value_get_boolean (value);
-          gtk_widget_queue_resize (GTK_WIDGET (self));
-          g_object_notify_by_pspec (object, pspec);
-        }
+      gtk_text_set_propagate_text_width (self, g_value_get_boolean (value));
       break;
 
     case PROP_EXTRA_MENU:
@@ -6849,25 +6838,6 @@ gtk_text_insert_emoji (GtkText *self)
   gtk_popover_popup (GTK_POPOVER (chooser));
 }
 
-static void
-set_enable_emoji_completion (GtkText  *self,
-                             gboolean  value)
-{
-  GtkTextPrivate *priv = gtk_text_get_instance_private (self);
-
-  if (priv->enable_emoji_completion == value)
-    return;
-
-  priv->enable_emoji_completion = value;
-
-  if (priv->enable_emoji_completion)
-    priv->emoji_completion = gtk_emoji_completion_new (self);
-  else
-    g_clear_pointer (&priv->emoji_completion, gtk_widget_unparent);
-
-  g_object_notify_by_pspec (G_OBJECT (self), text_props[PROP_ENABLE_EMOJI_COMPLETION]);
-}
-
 static void
 set_text_cursor (GtkWidget *widget)
 {
@@ -6924,6 +6894,142 @@ gtk_text_get_extra_menu (GtkText *self)
   return priv->extra_menu;
 }
 
+/**
+ * gtk_text_set_enable_emoji_completion:
+ * @self: a #GtkText
+ * @enable_emoji_completion: %TRUE to enable Emoji completion
+ *
+ * Sets whether Emoji completion is enabled. If it is,
+ * typing ':', followed by a recognized keyword, will pop
+ * up a window with suggested Emojis matching the keyword.
+ */
+void
+gtk_text_set_enable_emoji_completion (GtkText  *self,
+                                      gboolean  enable_emoji_completion)
+{
+  GtkTextPrivate *priv = gtk_text_get_instance_private (self);
+
+  g_return_if_fail (GTK_IS_TEXT (self));
+
+  if (priv->enable_emoji_completion == enable_emoji_completion)
+    return;
+
+  priv->enable_emoji_completion = enable_emoji_completion;
+
+  if (priv->enable_emoji_completion)
+    priv->emoji_completion = gtk_emoji_completion_new (self);
+  else
+    g_clear_pointer (&priv->emoji_completion, gtk_widget_unparent);
+
+  g_object_notify_by_pspec (G_OBJECT (self), text_props[PROP_ENABLE_EMOJI_COMPLETION]);
+}
+
+/**
+ * gtk_text_get_enable_emoji_completion:
+ * @self: a #GtkText
+ *
+ * Returns whether Emoji completion is enabled for this
+ * GtkText widget.
+ *
+ * Returns: %TRUE if Emoji completion is enabled
+ */
+gboolean
+gtk_text_get_enable_emoji_completion (GtkText *self)
+{
+  GtkTextPrivate *priv = gtk_text_get_instance_private (self);
+
+  g_return_val_if_fail (GTK_IS_TEXT (self), FALSE);
+
+  return priv->enable_emoji_completion;
+}
+
+/**
+ * gtk_text_set_propagate_text_width:
+ * @self: a #GtkText
+ * @propagate_text_width: %TRUE to propagate the text width
+ *
+ * Sets whether the GtkText should grow and shrink with the content.
+ */
+void
+gtk_text_set_propagate_text_width (GtkText  *self,
+                                   gboolean  propagate_text_width)
+{
+  GtkTextPrivate *priv = gtk_text_get_instance_private (self);
+
+  g_return_if_fail (GTK_IS_TEXT (self));
+
+  if (priv->propagate_text_width == propagate_text_width)
+    return;
+
+  priv->propagate_text_width = propagate_text_width;
+
+  gtk_widget_queue_resize (GTK_WIDGET (self));
+
+  g_object_notify_by_pspec (G_OBJECT (self), text_props[PROP_PROPAGATE_TEXT_WIDTH]);
+}
+
+/**
+ * gtk_text_get_propagate_text_width:
+ * @self: a #GtkText
+ *
+ * Returns whether the #GtkText will grow and shrink
+ * with the content.
+ *
+ * Returns: %TRUE if @self will propagate the text width
+ */
+gboolean
+gtk_text_get_propagate_text_width (GtkText *self)
+{
+  GtkTextPrivate *priv = gtk_text_get_instance_private (self);
+
+  g_return_val_if_fail (GTK_IS_TEXT (self), FALSE);
+
+  return priv->propagate_text_width;
+}
+
+/**
+ * gtk_text_set_truncate_multiline:
+ * @self: a #GtkText
+ * @truncate_multiline: %TRUE to truncate multi-line text
+ *
+ * Sets whether the GtkText should truncate multi-line text
+ * that is pasted into the widget.
+ */
+void
+gtk_text_set_truncate_multiline (GtkText  *self,
+                                 gboolean  truncate_multiline)
+{
+  GtkTextPrivate *priv = gtk_text_get_instance_private (self);
+
+  g_return_if_fail (GTK_IS_TEXT (self));
+
+  if (priv->truncate_multiline == truncate_multiline)
+    return;
+
+  priv->truncate_multiline = truncate_multiline;
+
+  g_object_notify_by_pspec (G_OBJECT (self), text_props[PROP_TRUNCATE_MULTILINE]);
+}
+
+/**
+ * gtk_text_get_truncate_multiline:
+ * @self: a #GtkText
+ *
+ * Returns whether the #GtkText will truncate multi-line text
+ * that is pasted into the widget
+ *
+ * Returns: %TRUE if @self will truncate multi-line text
+ */
+gboolean
+gtk_text_get_truncate_multiline (GtkText *self)
+{
+  GtkTextPrivate *priv = gtk_text_get_instance_private (self);
+
+  g_return_val_if_fail (GTK_IS_TEXT (self), FALSE);
+
+  return priv->truncate_multiline;
+}
+
 static void
 gtk_text_real_undo (GtkWidget  *widget,
                     const char *action_name,
index 0fa6db6c5eba994c2bf4f4a284d2bda1bc8bdc33..38ae25c42117f6469b56f6f5d737b9844fb2ad87 100644 (file)
@@ -140,6 +140,27 @@ void            gtk_text_set_extra_menu                 (GtkText         *self,
 GDK_AVAILABLE_IN_ALL
 GMenuModel *    gtk_text_get_extra_menu                 (GtkText         *self);
 
+GDK_AVAILABLE_IN_ALL
+void            gtk_text_set_enable_emoji_completion    (GtkText         *self,
+                                                         gboolean         enable_emoji_completion);
+GDK_AVAILABLE_IN_ALL
+gboolean        gtk_text_get_enable_emoji_completion    (GtkText         *self);
+
+
+GDK_AVAILABLE_IN_ALL
+void            gtk_text_set_propagate_text_width       (GtkText         *self,
+                                                         gboolean         propagate_text_width);
+GDK_AVAILABLE_IN_ALL
+gboolean        gtk_text_get_propagate_text_width       (GtkText         *self);
+
+GDK_AVAILABLE_IN_ALL
+void            gtk_text_set_truncate_multiline         (GtkText         *self,
+                                                         gboolean         truncate_multiline);
+GDK_AVAILABLE_IN_ALL
+gboolean        gtk_text_get_truncate_multiline         (GtkText         *self);
+
+
+
 G_END_DECLS
 
 #endif /* __GTK_TEXT_H__ */